﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using RCA1._0.DAL_WS;

namespace RCA1._0
{
    public partial class CongTy : Form
    {
        public CongTy()
        {
            InitializeComponent();
        }
        private DAL_WSSoapClient wsDAL = new DAL_WSSoapClient();
        public CONGTYDTO congTy;
       
        List<LOAICONGTYDTO> dSachLoaiCongTy;
        List<TruSoCongTyDTO> dSachTruSo;
        public List<NganhNgheKinhDoanhDTO> dSachNganhNgheKinhDoanh;
        public List<LoaiTruSoDTO> dSachLoaiTruSo;

        public TruSoCongTyDTO truSoChinhCongTy;
        public TruSoCongTyDTO truSoNhanThongBaoThue;

        private ChucDanhThanhVienDTO chucDanhThanhVien = new ChucDanhThanhVienDTO();
        private List<ChucDanhThanhVienDTO> dSachChucDanhThanhVien = null;

        private THANHVIENDTO thanhVien = new THANHVIENDTO();
        private List<THANHVIENDTO> dSachThanhVien = null;

        public NganhNgheKinhDoanhDTO nganhNgheKinhDoanhChinh;       
        

        private void CongTy_Load(object sender, EventArgs e)
        {
            congTySua = new CONGTYDTO();
            
            //Lấy bảng danh sách loại công ty
            dSachLoaiCongTy=new List<LOAICONGTYDTO>(wsDAL.GetDanhSachLoaiCongTy());
            
            //Thể hiện danh sách ra bảng
            cbbLoaiCongTy.DataSource = dSachLoaiCongTy;
            cbbLoaiCongTy.DisplayMember = "TenLoaiCongTy";
            cbbLoaiCongTy.ValueMember = "IDLoaiCongTy";            


            //Lấy đối tượng Trụ sở chính công ty theo mã công ty
            truSoChinhCongTy = wsDAL.TimTruSoChinhTheoMaCongTy(congTy.IDCongTy);

            //Lấy đối tượng Trụ sở nhận thông báo thuế
            //Mặc định trụ sở nhận thông báo thuế là trụ sở chính

            truSoNhanThongBaoThue = new TruSoCongTyDTO();
            truSoNhanThongBaoThue = truSoChinhCongTy;
            //Nếu trụ sở nhận thông báo thuế khác 0
            if (congTy.DiaChiNhanThongBaoThue != "0")
            {
                truSoNhanThongBaoThue = wsDAL.TimTruSoNhanThongBaoThueTheoMaCongTy(congTy.IDCongTy);
                checkboxDiaChiNhanThongBaoThue.Checked = false;
                txtDiaChiNhanThongBaoThue.Enabled = true;
            }

            //Lấy danh sách Ngành nghề kinh doanh thuộc công ty
            dSachNganhNgheKinhDoanh = new List<NganhNgheKinhDoanhDTO>(wsDAL.GetDanhSachNganhNgheKinhDoanhTheoMaCongTy(congTy.IDCongTy));


            //Lấy đối tượng ngành nghề kinh doanh chính thuộc công ty

            //Lấy danh sách chi nhánh và danh sách văn phòng đại diện thuộc công ty
            dSachTruSo = new List<TruSoCongTyDTO>(wsDAL.GetDanhSachTruSoCongTyTheoMaCongTy(congTy.IDCongTy));
            

            //Lấy danh sách loại trụ sở công ty
            dSachLoaiTruSo = new List<LoaiTruSoDTO>(wsDAL.GetDanhSachLoaiTruSoCongTy());

            //Lấy đối tượng ngành nghề kinh doanh chinh thuộc công ty

            nganhNgheKinhDoanhChinh=new NganhNgheKinhDoanhDTO();
            nganhNgheKinhDoanhChinh = wsDAL.TimKiemNganhNgheKinhDoanhChinhTheoMaCongTy(congTy.IDCongTy);

            //Thể hiện thông tin công ty
            TheHienThongTinCongTy();       
        }


        #region "Tab Thông tin công ty - đăng ký thuế"


        void TheHienThongTinCongTy()
        {
            txtTenCongTy.Text = congTy.TenCongTy;
            txtTenGDCongTy.Text = congTy.TenGiaoDichCongTy;
            txtTenVietTat.Text = congTy.TenVietTat;
            txtVonDieuLeSo.Text = congTy.VonDieuLeSo.ToString();
            txtVonDieuLeBangChu.Text = congTy.VonDieuLeBangChu;
            txtMenhGiaCoPhan.Text = congTy.MenhGiaCoPhan.ToString();
            txtEmail.Text = congTy.Email;
            txtWebsite.Text = congTy.Website;
            txtDiaChiTruSoChinh.Text = truSoChinhCongTy.DiaChi;
            txtDienThoaiTruSoChinh.Text = truSoChinhCongTy.DienThoai;
            txtFaxTruSoChinh.Text = truSoChinhCongTy.Fax;

            txtDiaChiNhanThongBaoThue.Text = truSoNhanThongBaoThue.DiaChi;
            txtVonPhapDinh.Text = congTy.VonPhapDinh.ToString();


            cbbLoaiCongTy.Text = TimTenLoaiCongTy(congTy.MaLoaiCongTy);

            //Hiển thị vùng công ty cổ phần
            txtMenhGiaCoPhan.Text = congTy.MenhGiaCoPhan.ToString();
            txtTongSoCoPhan.Text = congTy.TongSoCoPhan.ToString();
            txtSoCoPhanCoDongDangKyMua.Text = congTy.SoCoPhanDangKyMua.ToString();
            txtSoCoPhanChaoBan.Text = congTy.SoCoPhanChaoBan.ToString();

            //Hiển thị vùng thông tin đăng ký thuế
            dtpNgayBatDauHoatDong.Text = congTy.NgayBatDauHoatDong.ToShortDateString();
            dtpNamTaiChinhBatDau.Text = congTy.NamTaiChinhBatDau.ToShortDateString();
            dtpNamTaiChinhKetThuc.Text = congTy.NamTaiChinhKetThuc.ToShortDateString();
            txtTongSoLaoDong.Text = congTy.TongSoLaoDong;
            txtDangKyXuatKhau.Text = congTy.DangKyXuatKhau;
            txtTaiKhoanNganHang.Text = congTy.TaiKhoanNganHang;
            txtTaiKhoanKhoBac.Text = congTy.TaiKhoanKhoBac;
            txtNganhNgheKinhDoanhChinh.Text = nganhNgheKinhDoanhChinh.TenNganhNgheKinhDoanh;

        }
        

        #region "String Tìm ..."

        String TimTenLoaiCongTy(int MaLoaiCongTy)
        {
            foreach (LOAICONGTYDTO loaiCongTy in dSachLoaiCongTy)
                if (MaLoaiCongTy == loaiCongTy.IDLoaiCongTy)
                    return loaiCongTy.TenLoaiCongTy;
            return null;
        }

        //String TimDiaChiTruSoChinhCongTy(int IDCongTy)
        //{
        //    foreach (TruSoCongTyDTO truSoCongTy in dSachTruSoCongTy)
        //        if (IDCongTy == truSoCongTy.IDCongTy && truSoCongTy.IDLoaiTruSo == 1)
        //            return truSoCongTy.DiaChi;
        //    return null;
        //}

        //String TimDienThoaiTruSoChinhCongTy(int IDCongTy)
        //{
        //    foreach (TruSoCongTyDTO truSoCongTy in dSachTruSoCongTy)
        //        if (IDCongTy == truSoCongTy.IDCongTy && truSoCongTy.IDLoaiTruSo == 1)
        //            return truSoCongTy.DienThoai;
        //    return null;
        //}

        //String TimFaxTruSoChinhCongTy(int IDCongTy)
        //{
        //    foreach (TruSoCongTyDTO truSoCongTy in dSachTruSoCongTy)
        //        if (IDCongTy == truSoCongTy.IDCongTy && truSoCongTy.IDLoaiTruSo == 1)
        //            return truSoCongTy.Fax;
        //    return null;
        //}

        //String TimDiaChiDangKyThue(int IDCongTy)
        //{
        //    foreach (TruSoCongTyDTO truSoCongTy in dSachTruSoCongTy)
        //        if (IDCongTy == truSoCongTy.IDCongTy && truSoCongTy.IDLoaiTruSo == 4)
        //            return truSoCongTy.DiaChi;
        //    return null;
        //}

        #endregion


        private void btnHoanTac_Click(object sender, EventArgs e)
        {
            //Gọi lại đối tượng Công Ty chưa bị thay đổi
            TheHienThongTinCongTy();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            wsDAL.XoaCongTy(congTy);
            MessageBox.Show("Đã xóa công ty thành công");

            //Có sự thay đổi thông tin
            TrangChu.xetThayDoi_CongTy = 1;
            this.Close();
        }

        //Tạo mới đối tượng Công Ty Sửa để lưu thông tin được thay đổi
        CONGTYDTO congTySua = null;
        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            //Cập nhật thông tin Công Ty lại mới
            congTySua.IDCongTy = congTy.IDCongTy;
            congTySua.TinhTrangCongTy = congTy.TinhTrangCongTy;
            congTySua.NgayChinhSua = DateTime.Now.Date;
            wsDAL.SuaCongTy(congTySua);

            MessageBox.Show("Thông tin Công Ty đã được cập nhật mới");

            congTy = wsDAL.TimTheoMaCongTy(congTy.IDCongTy);

            btnHoanTac.Enabled = false;
            btnCapNhat.Enabled = false;

            //Có sự thay đổi thông tin
            TrangChu.xetThayDoi_CongTy = 1;
        }

        //Thể hiện thay đổi Button Cập Nhật, Button Về Đầu
        void TheHienThayDoiCongTy(bool thayDoi)
        {
            if (thayDoi == true)
            {
                btnHoanTac.Enabled = false;
                btnCapNhat.Enabled = false;
            }
            else
            {
                btnHoanTac.Enabled = true;
                btnCapNhat.Enabled = true;
            }
        }


        private void checkboxDiaChiNhanThongBaoThue_CheckedChanged(object sender, EventArgs e)
        {
            if (checkboxDiaChiNhanThongBaoThue.Checked == true)
                txtDiaChiNhanThongBaoThue.Enabled = false;
            else
                txtDiaChiNhanThongBaoThue.Enabled = true;
        }


        #region "////////Kiểm tra sự thay đổi Công Ty so với ban đầu"

        //Kiểm tra sự thay đổi Tên Công Ty so với ban đầu
        private void txtTenCongTy_TextChanged(object sender, EventArgs e)
        {
            congTySua.TenCongTy = txtTenCongTy.Text;
            TheHienThayDoiCongTy(congTySua.TenCongTy.Equals(congTy.TenCongTy));
        }

        //Kiểm tra sự thay đổi Tên Giao Dịch Công Ty so với ban đầu
        private void txtTenGDCongTy_TextChanged(object sender, EventArgs e)
        {
            congTySua.TenGiaoDichCongTy = txtTenGDCongTy.Text;
            TheHienThayDoiCongTy(congTySua.TenGiaoDichCongTy.Equals(congTy.TenGiaoDichCongTy));
        }

        //Kiểm tra sự thay đổi Tên Viết Tắt Công Ty so với ban đầu
        private void txtTenVietTat_TextChanged(object sender, EventArgs e)
        {
            congTySua.TenVietTat = txtTenVietTat.Text;
            TheHienThayDoiCongTy(congTySua.TenVietTat.Equals(congTy.TenVietTat));
        }

        private void txtVonDieuLeSo_TextChanged(object sender, EventArgs e)
        {
            congTySua.VonDieuLeSo = Double.Parse(txtVonDieuLeSo.Text);
            TheHienThayDoiCongTy(congTySua.VonDieuLeSo.Equals(congTy.VonDieuLeSo));
        }

        private void txtVonDieuLeBangChu_TextChanged(object sender, EventArgs e)
        {
            congTySua.VonDieuLeBangChu = txtVonDieuLeBangChu.Text;
            TheHienThayDoiCongTy(congTySua.VonDieuLeBangChu.Equals(congTy.VonDieuLeBangChu));
        }

        private void txtMenhGiaCoPhan_TextChanged(object sender, EventArgs e)
        {
            congTySua.MenhGiaCoPhan = Double.Parse(txtMenhGiaCoPhan.Text);
            TheHienThayDoiCongTy(congTySua.MenhGiaCoPhan.Equals(congTy.MenhGiaCoPhan));
        }

        private void txtEmail_TextChanged(object sender, EventArgs e)
        {
            congTySua.Email = txtEmail.Text;
            TheHienThayDoiCongTy(congTySua.Email.Equals(congTy.Email));
        }

        private void txtWebsite_TextChanged(object sender, EventArgs e)
        {
            congTySua.Website = txtWebsite.Text;
            TheHienThayDoiCongTy(congTySua.Website.Equals(congTy.Website));
        }

        private void txtNganhNgheKinhDoanhChinh_TextChanged(object sender, EventArgs e)
        {
            congTySua.NganhNgheKinhDoanhChinh = txtNganhNgheKinhDoanhChinh.Text;
            TheHienThayDoiCongTy(congTySua.NganhNgheKinhDoanhChinh.Equals(congTy.NganhNgheKinhDoanhChinh));
        }

        private void dtpNgayBatDauHoatDong_ValueChanged(object sender, EventArgs e)
        {
            congTySua.NgayBatDauHoatDong = dtpNgayBatDauHoatDong.Value.Date;
            TheHienThayDoiCongTy(congTy.NgayBatDauHoatDong.Equals(congTy.NgayBatDauHoatDong));
        }

        private void dtpNamTaiChinhBatDau_ValueChanged(object sender, EventArgs e)
        {
            congTySua.NamTaiChinhBatDau = dtpNamTaiChinhBatDau.Value.Date;
            TheHienThayDoiCongTy(congTy.NamTaiChinhBatDau.Equals(congTy.NamTaiChinhBatDau));
        }

        private void dtpNamTaiChinhKetThuc_ValueChanged(object sender, EventArgs e)
        {
            congTySua.NamTaiChinhKetThuc = dtpNamTaiChinhKetThuc.Value.Date;
            TheHienThayDoiCongTy(congTy.NamTaiChinhKetThuc.Equals(congTy.NamTaiChinhKetThuc));
        }

        private void txtTongSoLaoDong_TextChanged(object sender, EventArgs e)
        {
            congTySua.TongSoLaoDong = txtTongSoLaoDong.Text;
            TheHienThayDoiCongTy(congTySua.TongSoLaoDong.Equals(congTy.TongSoLaoDong));
        }

        private void txtDangKyXuatKhau_TextChanged(object sender, EventArgs e)
        {
            congTySua.DangKyXuatKhau = txtDangKyXuatKhau.Text;
            TheHienThayDoiCongTy(congTySua.DangKyXuatKhau.Equals(congTy.DangKyXuatKhau));
        }

        private void txtTaiKhoanNganHang_TextChanged(object sender, EventArgs e)
        {
            congTySua.TaiKhoanNganHang = txtTaiKhoanNganHang.Text;
            TheHienThayDoiCongTy(congTySua.TaiKhoanNganHang.Equals(congTy.TaiKhoanNganHang));
        }

        private void txtTaiKhoanKhoBac_TextChanged(object sender, EventArgs e)
        {
            congTySua.TaiKhoanKhoBac = txtTaiKhoanKhoBac.Text;
            TheHienThayDoiCongTy(congTySua.TaiKhoanKhoBac.Equals(congTy.TaiKhoanKhoBac));
        }

        private void txtVonPhapDinh_TextChanged(object sender, EventArgs e)
        {
            congTySua.VonPhapDinh = Double.Parse(txtVonPhapDinh.Text);
            TheHienThayDoiCongTy(congTySua.VonPhapDinh.Equals(congTy.VonPhapDinh));
        }

        private void txtSoCoPhanDangKyMua_TextChanged(object sender, EventArgs e)
        {
            congTySua.SoCoPhanDangKyMua = Double.Parse(txtSoCoPhanDangKyMua.Text);
            TheHienThayDoiCongTy(congTySua.SoCoPhanDangKyMua.Equals(congTy.SoCoPhanDangKyMua));
        }


        private void cbbLoaiCongTy_SelectedIndexChanged(object sender, EventArgs e)
        {
            LOAICONGTYDTO loaiCongTY = dSachLoaiCongTy[cbbLoaiCongTy.SelectedIndex];

            congTySua.MaLoaiCongTy = loaiCongTY.IDLoaiCongTy;
            TheHienThayDoiCongTy(congTySua.MaLoaiCongTy.Equals(congTy.MaLoaiCongTy));

            if (cbbLoaiCongTy.SelectedIndex != 1)
                panCongTyCoPhan.Hide();
            else
                panCongTyCoPhan.Show();
        }

        private void txtDiaChiTruSoChinh_TextChanged(object sender, EventArgs e)
        {
            //TruSoCongTyDTO truSoCongTy = dSachTruSo[txtDiaChiTruSoChinh.Text];

            //congTySua.IDCongTy = truSoCongTy.MaCongTy;
            //TheHienThayDoiCongTy(congTySua.IDCongTy.Equals(congTy.IDCongTy));
        }

        private void txtDienThoaiTruSoChinh_TextChanged(object sender, EventArgs e)
        {
            //congTySua.TaiKhoanNganHang = txtTaiKhoanNganHang.Text;
            //TheHienThayDoiCongTy(congTySua.TaiKhoanNganHang.Equals(congTy.TaiKhoanNganHang));
        }

        private void txtFaxTruSoChinh_TextChanged(object sender, EventArgs e)
        {
            //TruSoCongTyDTO truSoCongTy = dSachTruSo[txtDiaChiTruSoChinh.Text];

            //congTySua.IDCongTy = truSoCongTy.MaCongTy;
            //TheHienThayDoiCongTy(congTySua.IDCongTy.Equals(congTy.IDCongTy));
        }

        private void txtDiaChiNhanThongBaoThue_TextChanged(object sender, EventArgs e)
        {
            congTySua.DiaChiNhanThongBaoThue = txtDiaChiNhanThongBaoThue.Text;
            TheHienThayDoiCongTy(congTySua.DiaChiNhanThongBaoThue.Equals(congTy.DiaChiNhanThongBaoThue));
        }
       
        #endregion


        #region "////////Sự kiện Gõ từ bàn phím - Kiểm tra ký tự nhập vào từ bàn phím"

        /*
         * Sự kiện Gõ từ bàn phím
         * Kiểm tra ký tự nhập vào từ bàn phím
         */
        private void txtVonDieuLeSo_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }

        private void txtMenhGiaCoPhan_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if ((char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127) || Double.Parse(txtMenhGiaCoPhan.Text) < 0)
                e.Handled = true;
        }

        private void txtDienThoai_KeyPress(object sender, KeyPressEventArgs e)
        {

        }

        private void txtFax_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }


        private void txtTaiKhoanNganHang_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }

        private void txtTaiKhoanKhoBac_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }


        private void txtDienThoaiTruSoChinh_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }

        private void txtFaxTruSoChinh_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }

        private void txtSoCoPhanDangKyMua_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }

        #endregion


        #endregion


        #region "Tab Danh sách ngành nghề kinh doanh"

        NganhNgheKinhDoanhDTO nganhNgheKinhDoanh;
        NganhNgheKinhDoanhDTO nganhNgheKinhDoanhSua;

        void TheHienDanhSachNganhNgheKinhDoanh()
        {

            dtgvDSNganhNgheKinhDoanhChinh.DataSource = dSachNganhNgheKinhDoanh;
            nganhNgheKinhDoanh = new NganhNgheKinhDoanhDTO();
            nganhNgheKinhDoanhSua = new NganhNgheKinhDoanhDTO();
        }

        void LayDanhSachNganhNgheKinhDoanhMoi()
        {
            //Làm mới 2 đối tượng ngành nghề kinh doanh và ngành nghề kinh doanh Sửa
            nganhNgheKinhDoanh = new NganhNgheKinhDoanhDTO();
            nganhNgheKinhDoanhSua = new NganhNgheKinhDoanhDTO();

            dtgvDSChiNhanh.DataSource = dSachNganhNgheKinhDoanh;
        }

        private void dtgvDSNganhNgheKinhDoanhChinh_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            nganhNgheKinhDoanh = dSachNganhNgheKinhDoanh[e.RowIndex];
            nganhNgheKinhDoanhSua = dSachNganhNgheKinhDoanh[e.RowIndex];

            txtHienThiTenNganhNgheKinhDoanh.Text = nganhNgheKinhDoanh.TenNganhNgheKinhDoanh;
            txtHienThiMaNganhNgheKinhDoanh.Text = nganhNgheKinhDoanh.MaNganhNgheKinhDoanh;
        }


        private void btnHoanTacNganhNgheKinhDoanhChinh_Click(object sender, EventArgs e)
        {
            txtHienThiTenNganhNgheKinhDoanh.Text = nganhNgheKinhDoanh.TenNganhNgheKinhDoanh;
            txtHienThiMaNganhNgheKinhDoanh.Text = nganhNgheKinhDoanh.MaNganhNgheKinhDoanh;
        }

        private void btnCapNhatNganhNgheKinhDoanhChinh_Click(object sender, EventArgs e)
        {
            wsDAL.SuaNganhNgheKinhDoanh(nganhNgheKinhDoanhSua);
            MessageBox.Show("Cập nhật ngành nghề kinh doanh thành công");
        }

        private void btnXoaNganhNgheKinhDoanhChinh_Click(object sender, EventArgs e)
        {
            wsDAL.XoaNganhNgheKinhDoanh(nganhNgheKinhDoanh);
            MessageBox.Show("Đã xóa ngành nghề kinh doanh thành công");

            //Có sự thay đổi thông tin
            TrangChu.xetThayDoi_CongTy = 1;
            this.Close();
        }

        private string kiemTraNNKD()
        {
            string error = "";
            bool hopLe = true;

            hopLe = this.txtThemTenNganhNgheKinhDoanhChinh.Text != "";
            if (!hopLe)
            {
                error += "Ngành nghề kinh doanh không được để trống .\n ";
            }
            hopLe = this.txtThemMaNganhNgheKinhDoanhChinh.Text != "";
            if (!hopLe)
            {
                error += "Bạn phải nhập mã ngành nghề kinh doanh . ";
            }

            return error;
        }

        private void btnThemNganhNgheKinhDoanhChinh_Click(object sender, EventArgs e)
        {
            string error = kiemTraNNKD();
            if (error == "")
            {
                string themtennnkd = this.txtThemTenNganhNgheKinhDoanhChinh.Text;
                string themmannkd = this.txtThemMaNganhNgheKinhDoanhChinh.Text;

                nganhNgheKinhDoanh = new NganhNgheKinhDoanhDTO();
                nganhNgheKinhDoanh.TenNganhNgheKinhDoanh = themtennnkd;
                nganhNgheKinhDoanh.MaNganhNgheKinhDoanh = themmannkd;

                nganhNgheKinhDoanh.MaCongTy = congTy.IDCongTy;

                wsDAL.ThemNganhNgheKinhDoanh(nganhNgheKinhDoanh);
                MessageBox.Show("Thêm chi nhánh thành công !", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);

                LayDanhSachNganhNgheKinhDoanhMoi();



            }
            else
            {
                MessageBox.Show(error, "Báo lỗi !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        //Thể hiện thay đổi Button Cập Nhật, Button Về Đầu
        void TheHienThayDoiNganhNgheKinhDoanh(bool thayDoi)
        {
            if (thayDoi == true)
            {
                btnHoanTacNganhNgheKinhDoanhChinh.Enabled = false;
                btnCapNhatNganhNgheKinhDoanhChinh.Enabled = false;
            }
            else
            {
                btnHoanTacNganhNgheKinhDoanhChinh.Enabled = true;
                btnCapNhatNganhNgheKinhDoanhChinh.Enabled = true;
            }
        }

        #region "////////Kiểm tra sự thay đổi Công Ty so với ban đầu"

        private void txtHienThiTenNganhNgheKinhDoanh_TextChanged(object sender, EventArgs e)
        {
            nganhNgheKinhDoanhSua.TenNganhNgheKinhDoanh = txtHienThiTenNganhNgheKinhDoanh.Text;
            TheHienThayDoiNganhNgheKinhDoanh(nganhNgheKinhDoanhSua.TenNganhNgheKinhDoanh.Equals(nganhNgheKinhDoanh.TenNganhNgheKinhDoanh));
        }

        private void txtHienThiMaNganhNgheKinhDoanh_TextChanged(object sender, EventArgs e)
        {
            nganhNgheKinhDoanhSua.MaNganhNgheKinhDoanh = txtHienThiMaNganhNgheKinhDoanh.Text;
            TheHienThayDoiNganhNgheKinhDoanh(nganhNgheKinhDoanhSua.MaNganhNgheKinhDoanh.Equals(nganhNgheKinhDoanh.MaNganhNgheKinhDoanh));
        }

        #endregion


        #region "////////Sự kiện Gõ từ bàn phím - Kiểm tra ký tự nhập vào từ bàn phím"

        /*
         * Sự kiện Gõ từ bàn phím
         * Kiểm tra ký tự nhập vào từ bàn phím
         */
       
        private void txtHienThiMaNganhNgheKinhDoanh_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }

        private void txtThemMaNganhNgheKinhDoanhChinh_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }

        #endregion

        #endregion


        #region "Tab Danh sách thành viên thuộc công ty"

        void TheHienDanhSachThanhVienThuocCongTy()
        {
            //Lấy danh sách thành viên
            dSachThanhVien = new List<THANHVIENDTO>(wsDAL.GetDanhSachThanhVienTheoMaCongTy());
            dtgvDSThanhVien.DataSource = dSachThanhVien;
            cbbChucDanh.Text = LayChucDanhThanhVienTheoDanhSach(thanhVien.MaChucDanhThanhVien);
            //dSachChucDanhThanhVien = new List<ChucDanhThanhVienDTO>(wsDAL.GetDanhSachChucDanhThanhVien());
            ////Thể hiện danh sách loại chức danh ra bảng chọn danh sách loại chức danh
            //cbbChucDanh.DataSource = dSachChucDanhThanhVien;
            //cbbChucDanh.DisplayMember = "TenChucDanhThanhVien";
            //cbbChucDanh.ValueMember = "IDChucDanhThanhVien";
        }

        String LayChucDanhThanhVienTheoDanhSach(int MaChuDanhThanhVien)
        {
            foreach (ChucDanhThanhVienDTO chucDanhThanhVien in dSachChucDanhThanhVien)
                if (MaChuDanhThanhVien.Equals(chucDanhThanhVien.IDChucDanhThanhVien) == true)
                    return chucDanhThanhVien.TenChucDanhThanhVien;
            return null;
        }


        private void btnLamLai_Click(object sender, EventArgs e)
        {
            this.txtTenThanhVien.Text = "";
            this.txtTenThanhVienInHoa.Text = "";
            this.txtQuocTich.Text = "";
            this.txtDanToc.Text = "";
            this.txtDiaChiThuongTru.Text = "";
            this.txtNoiOHienTai.Text = "";
            this.txtSoCMND.Text = "";
            this.txtNoiCapCMND.Text = "";
            this.txtTongGiaTriGopVon.Text = "";
            this.txtSoHuuVon.Text = "";
            this.txtPhanTramGopVon.Text = "";
            this.txtDienThoaiThanhVien.Text = "";
            this.txtEmail.Text = "";
            this.txtWebsite.Text = "";
        }

        private string kiemTraTV()
        {
            string error = "";
            bool hopLe = true;
            hopLe = this.txtTenThanhVien.Text != "";
            if (!hopLe)
            {
                error += "Bạn phải nhập tên thành viên .\n ";
            }
            hopLe = this.txtTenThanhVienInHoa.Text != "";
            if (!hopLe)
            {
                error += "Phải nhập tên thành viên viết hoa.\n ";
            }
            hopLe = this.txtQuocTich.Text != "";
            if (!hopLe)
            {
                error += "Bạn chưa nhập quốc tịch .\n ";
            }
            hopLe = this.txtDanToc.Text != "";
            if (!hopLe)
            {
                error += "Bạn chưa nhập dân tộc .\n ";
            }
            hopLe = this.txtDiaChiThuongTru.Text != "";
            if (!hopLe)
            {
                error += "Địa chỉ thường trú không được để trống .\n ";
            }
            hopLe = this.txtNoiOHienTai.Text != "";
            if (!hopLe)
            {
                error += " Bạn chưa nhập nơi ở hiện tại .\n ";
            }
            hopLe = this.txtDienThoaiThanhVien.Text != "";
            if (!hopLe)
            {
                error += " Bạn chưa nhập điện thoại .\n ";
            }

            hopLe = this.txtSoCMND.Text != "";
            if (!hopLe)
            {
                error += "Số CMND hay giấy phép kinh doanh không được để trống .\n ";
            }
            hopLe = this.txtNoiCapCMND.Text != "";
            if (!hopLe)
            {
                error += "Cần nhập nơi cấp CMND hay giấy phép kinh doanh .\n ";
            }
            hopLe = this.txtTongGiaTriGopVon.Text != "";
            if (!hopLe)
            {
                error += "Nhập tổng giá trị góp vốn .\n ";
            }
            hopLe = this.txtSoHuuVon.Text != "";
            if (!hopLe)
            {
                error += "Nhập sở hữu vốn .\n ";
            }
            hopLe = this.txtPhanTramGopVon.Text != "";
            if (!hopLe)
            {
                error += "Nhập phầm trăm góp vốn .\n ";
            }

            return error;
        }


        private void btnThemThanhVien_Click(object sender, EventArgs e)
        {
            string error = kiemTraTV();
            if (error == "")
            {

                string tenthanhvien = this.txtTenThanhVien.Text;
                string tenthanhvieninhoa = this.txtTenThanhVienInHoa.Text;
                DateTime ntns = Convert.ToDateTime(this.dtpNgaySinh.Text.ToString());
                string gioitinh = "";
                if (this.rdbNam.Checked == true)
                {
                    gioitinh = "Nam";
                }
                else
                {
                    gioitinh = "Nữ";
                }
                string quoctich = this.txtQuocTich.Text;
                string dantoc = this.txtDanToc.Text;
                string diachithuongtru = this.txtDiaChiThuongTru.Text;
                string noiohientai = this.txtNoiOHienTai.Text;
                string cmnd = this.txtSoCMND.Text;
                string noicapcmnd = this.txtNoiCapCMND.Text;
                DateTime ngaycapcmnd = Convert.ToDateTime(this.dtpNgayCapCMND.Text.ToString());
                double tonggiatrigv = double.Parse(this.txtTongGiaTriGopVon.Text);
                string sohuuvon = this.txtSoHuuVon.Text;
                double phantramgv = double.Parse(this.txtPhanTramGopVon.Text);
                DateTime thoidiemgv = Convert.ToDateTime(this.dtpThoiDiemGV.Text.ToString());

               
                string dienthoai = this.txtDienThoaiThanhVien.Text;
                string email = this.txtEmail.Text;
                string website = this.txtWebsite.Text;

                // int email = int.Parse(this.txtEmail.Text.ToString());          

                chucDanhThanhVien = new ChucDanhThanhVienDTO();
                chucDanhThanhVien = (ChucDanhThanhVienDTO)this.cbbChucDanh.SelectedItem;
                int machucdanhtv = chucDanhThanhVien.IDChucDanhThanhVien;

                int macty = congTy.IDCongTy;

                thanhVien = new THANHVIENDTO();
                thanhVien.TenThanhVienThuong = tenthanhvien;
                thanhVien.TenThanhVienInHoa = tenthanhvieninhoa;
                thanhVien.NTNS = ntns;
                thanhVien.GioiTinh = gioitinh;
                thanhVien.QuocTich = quoctich;
                thanhVien.DanToc = dantoc;
                thanhVien.DiaChiThuongTru = diachithuongtru;
                thanhVien.NoiOHienTai = noiohientai;
                thanhVien.SoCMND = cmnd;
                thanhVien.NoiCapCMND = noicapcmnd;
                thanhVien.NgayCapCMND = ngaycapcmnd;
                thanhVien.TongGiaTriGopVon = tonggiatrigv;
                thanhVien.SoHuuVon = sohuuvon;
                thanhVien.PhanTramGopVon = phantramgv;
                thanhVien.ThoiDiemGopVon = thoidiemgv;
                thanhVien.MaCongTy = macty;
                thanhVien.MaChucDanhThanhVien = machucdanhtv;
                thanhVien.DienThoai = dienthoai;
                thanhVien.Email = email;
                thanhVien.Website = website;

                wsDAL.ThemThanhVien(thanhVien);
                MessageBox.Show("Thêm thành viên thành công !", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //load lại danh sách thành viên                 
                TheHienDanhSachThanhVienThuocCongTy();
            }
            else
            {
                MessageBox.Show(error, "Báo lỗi !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        #region "////////Kiểm tra sự thay đổi Công Ty so với ban đầu"
        #endregion


        #region "////////Sự kiện Gõ từ bàn phím - Kiểm tra ký tự nhập vào từ bàn phím"

        /*
         * Sự kiện Gõ từ bàn phím
         * Kiểm tra ký tự nhập vào từ bàn phím
         */
        //private void txtVonDieuLeSo_KeyPress(object sender, KeyPressEventArgs e)
        //{
        //    //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
        //    if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
        //        e.Handled = true;
        //}
        #endregion

        #endregion


        #region "Tab Danh sách chi  nhánh  - Văn phòng đại diện"
        TruSoCongTyDTO truSo;
        TruSoCongTyDTO truSoSua;
        
        void TheHienChiNhanhVPDD()
        {
            //Thể hiện danh sách chi nhánh thuộc công ty ra bảng
            dtgvDSChiNhanh.DataSource = dSachTruSo;


            //Thể hiện danh sách loại trụ sở vào bảng chọn Loại trụ sở công ty

            cmbLoaiTruSoCongTyTimKiem.DataSource = dSachLoaiTruSo;
            cmbLoaiTruSoCongTyTimKiem.DisplayMember = "TenLoaiTruSo";
            cmbLoaiTruSoCongTyTimKiem.ValueMember = "IDLoaiTruSo";           

            //Tạo đối tượng trụ sở công ty và  đối tượng trụ sở công ty sửa
            truSo = new TruSoCongTyDTO();
            truSoSua = new TruSoCongTyDTO();
        }

        void LayDanhSachTruSoMoi()
        {
            //Làm mới 2 đối tượng trụ sở và trụ sở Sửa
            truSo = new TruSoCongTyDTO();
            truSoSua = new TruSoCongTyDTO();
            dtgvDSChiNhanh.DataSource = dSachTruSo;

        }

        void TheHienThayDoiTruSo(bool thayDoi)
        {
            if (thayDoi == true)
            {
                btnHoanTacDiaChiChiNhanh.Enabled = false;
                btnCapNhatDiaChiChiNhanh.Enabled = false;
            }
            else
            {
                btnHoanTacDiaChiChiNhanh.Enabled = true;
                btnCapNhatDiaChiChiNhanh.Enabled = true;
            }
        }
        private void cmbLoaiTruSoCongTyTimKiem_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                truSoSua.MaLoaiTruSo=  (int)cmbLoaiTruSoCongTyTimKiem.SelectedValue;
                dSachTruSo = new List<TruSoCongTyDTO>(wsDAL.GetDanhSachTheoLoaiTruSoVaMaCongTy(truSoSua.MaLoaiTruSo, congTy.IDCongTy));
                dtgvDSChiNhanh.DataSource = dSachTruSo;

                TheHienThayDoiTruSo(truSoSua.MaLoaiTruSo.Equals(truSo.MaLoaiTruSo));
            }
            catch(Exception ex)
            {
            }
        }
        private void btnXemTatCaDanhSachTruSo_Click(object sender, EventArgs e)
        {
            cmbLoaiTruSoCongTyTimKiem.Text = "Xem tất cả";
            dSachTruSo = new List<TruSoCongTyDTO>(wsDAL.GetDanhSachTruSoCongTyTheoMaCongTy(congTy.IDCongTy));
            dtgvDSChiNhanh.DataSource = dSachTruSo;
        }
        private void dtgvDSChiNhanh_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                truSo = (TruSoCongTyDTO)dSachTruSo[e.RowIndex];

                //Thể hiện thông tin trụ sở được chọn
                txtHienThiDienThoaiChiNhanh.Text = truSo.DienThoai;
                txtHienThiFax.Text = truSo.Fax;
                txtHienThiDiaChiChiNhanh.Text = truSo.DiaChi;
                cmbLoaiTruSoCongTyTimKiem.Text = dSachLoaiTruSo[truSo.MaLoaiTruSo-1].TenLoaiTruSo;
                //Gán giá trị IDTruSo và MaCongTy cho đối tượng sửa
                truSoSua.IDTruSoCongTy = truSo.IDTruSoCongTy;
                truSoSua.MaCongTy = truSo.MaCongTy;

                btnXoaDiaChiChiNhanh.Enabled = true;
            }
            catch (Exception ex) { }
        }

       
        private void btnHoanTacDiaChiChiNhanh_Click(object sender, EventArgs e)
        {
            txtHienThiDienThoaiChiNhanh.Text = truSo.DienThoai;
            txtHienThiFax.Text = truSo.Fax;
            txtHienThiDiaChiChiNhanh.Text = truSo.DiaChi;
        }


        private void btnCapNhatDiaChiChiNhanh_Click(object sender, EventArgs e)
        {
            truSoSua.TinhTrangTruSoCongTy = 1;
            wsDAL.SuaTruSoCongTy(truSoSua);
            MessageBox.Show("Cập nhật thành công");

            cmbLoaiTruSoCongTyTimKiem_SelectedIndexChanged(sender, e);
        }

        void LamTrongDanhSachTruSo(object sender, EventArgs e)
        {
            txtHienThiDiaChiChiNhanh.Text = "";
            txtHienThiDienThoaiChiNhanh.Text = "";
            txtHienThiFax.Text = "";

            btnXemTatCaDanhSachTruSo_Click(sender, e);
        }


        private string kiemTraCN()
        {
            string error = "";
            bool hopLe = true;

            hopLe = this.txtHienThiDiaChiChiNhanh.Text != "";
            if (!hopLe)
            {
                error += "Địa chỉ không được để trống .\n ";
            }
            hopLe = this.txtHienThiDienThoaiChiNhanh.Text != "";
            if (!hopLe)
            {
                error += "Bạn chưa nhập điện thoại . ";
            }

            return error;
        }

        private void btnThemTruSo_Click(object sender, EventArgs e)
        {
            string error = kiemTraCN();
            if (error == "")
            {
                string themdiachicn = this.txtHienThiDiaChiChiNhanh.Text;
                string themdienthoaicn = this.txtHienThiDienThoaiChiNhanh.Text;
                string faxcn = this.txtHienThiFax.Text;

                truSo = new TruSoCongTyDTO();
                truSo.DiaChi = themdiachicn;
                truSo.DienThoai = themdienthoaicn;
                truSo.Fax = faxcn;

                truSo.MaCongTy = congTy.IDCongTy;

                wsDAL.ThemTruSoCongTy(truSo);
                MessageBox.Show("Đã thêm thành công !", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);

                LayDanhSachTruSoMoi();



            }
            else
            {
                MessageBox.Show(error, "Báo lỗi !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        private void btnXoaDiaChiChiNhanh_Click(object sender, EventArgs e)
        {
            wsDAL.XoaTruSoCongTy(truSo);
            MessageBox.Show("Đã xóa thành công");

            //Có sự thay đổi thông tin
            TrangChu.xetThayDoi_CongTy = 1;
            this.Close();
        }
        private void cmbLoaiTruSoCongTyTimKiem_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        #region "////////Kiểm tra sự thay đổi Công Ty so với ban đầu"

        private void txtHienThiDiaChiChiNhanh_TextChanged(object sender, EventArgs e)
        {
            truSoSua.DiaChi = txtHienThiDiaChiChiNhanh.Text;
            TheHienThayDoiTruSo(truSoSua.DiaChi.Equals(truSo.DiaChi));
        }
        private void txtHienThiDienThoaiChiNhanh_TextChanged(object sender, EventArgs e)
        {
            truSoSua.DienThoai = txtHienThiDienThoaiChiNhanh.Text;
            TheHienThayDoiTruSo(truSoSua.DienThoai.Equals(truSo.DienThoai));
        }

        private void txtHienThiFax_TextChanged(object sender, EventArgs e)
        {
            truSoSua.Fax = txtHienThiFax.Text;
            TheHienThayDoiTruSo(truSoSua.Fax.Equals(truSo.Fax));
        }

        #endregion


        #region "////////Sự kiện Gõ từ bàn phím - Kiểm tra ký tự nhập vào từ bàn phím"

        /*
         * Sự kiện Gõ từ bàn phím
         * Kiểm tra ký tự nhập vào từ bàn phím
         */
        private void txtHienThiDienThoaiChiNhanh_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }

        private void txtHienThiFax_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Nếu là ký tự chữ và không phải là ký tự backspace thì khóa phím
            if (char.IsLetter(e.KeyChar) == true && e.KeyChar != (char)127)
                e.Handled = true;
        }

        #endregion

        #endregion

       
        private void btnLuuPdf_Click(object sender, EventArgs e)
        {

        }


        private void btnLuuWord_Click(object sender, EventArgs e)
        {

        }
        

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }


        private void btnSoanDieuLe_Click(object sender, EventArgs e)
        {
            SoanDieuLe frm = new SoanDieuLe();
            frm.congTy = congTy;
            frm.ShowDialog();
        }


        private void tbCongTy_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Nếu tab được chọn là tab Danh sách ngành nghề kinh doanh
            if (tbCongTy.SelectedIndex == 1)
                TheHienDanhSachNganhNgheKinhDoanh();
            //Nếu tab được chọn là tab Danh sách thành viên thuộc công ty
            if (tbCongTy.SelectedIndex == 2)
                TheHienDanhSachThanhVienThuocCongTy();   
            //Nếu tab được chọn là tab Danh sách chi nhánh - văn phòng đại diện
            if (tbCongTy.SelectedIndex == 3)
                TheHienChiNhanhVPDD();

        }

       

        //private void btnDSNganhNgheKinhDoanhChinh_Click(object sender, EventArgs e)
        //{
        //    NganhNgheKinhDoanh frm = new NganhNgheKinhDoanh();
        //    frm.congTy = congTy;
        //    frm.ShowDialog();
        //}

    }
}
